//
// Created by yanhai on 2020/3/30.
//

#ifndef CPP_STUDY_STRING_H
#define CPP_STUDY_STRING_H

class String {
public:
    /**
     * 知识点1 构造函数、拷贝构造函数、拷贝赋值函数
     *  带指针的类，一定要实现拷贝构造和拷贝赋值（不能用编译器默认给的）
     *
     * @param cstr
     */
    // Big Three ，三个特殊函数
    String(const char *cstr = 0);

    // 拷贝构造函数
    String(const String &str);

    // 拷贝赋值函数
    String &operator=(const String &str);

    ~String();

    char *c_str() const { return m_data; }

private:
    char *m_data;
};

std::ostream &operator<<(std::ostream &os, const String &str);

#endif //CPP_STUDY_STRING_H
